﻿/*
SINACOR - BMF&Bovespa
Arquivo: AcertoIRRF.cs
Criado em: 23-jun-2010 10:46:29
Arquiteto Responsável: p-ksantos
*/
using System;
using System.Collections.Generic;
using System.Text;
using Sinacor.Infra.Common;
using Sinacor.Infra.UI.Common;
using Sinacor.Infra.Common.Exceptions;
using Sinacor.UI.Bovespa.Movimento.Communication.Bovespa;
using Sinacor.Infra.UI.Authorization;


namespace Sinacor.UI.Bovespa.Movimento.Presenter 
{
    public class AcertoIRRF : BasePresenter<IAcertoIRRF>
	{
		#region Atributos
		private Communication.AcertoIRRF _communicationAcertoIRRF;
		private Model.Parameter.FiltroAcertoIRRF _filtroAcertoIRRF;		
		private ModelCollection<Model.Bolsa> _listaBolsas;
		private ModelCollection<Model.DiasLiquidacaoAcerto> _listaDiasLiquidacaoAcerto;
		private ModelCollection<Model.AcertoIRRF> _listaAcertosIRRF;
		#endregion

        #region Construtores

        public AcertoIRRF(IAcertoIRRF view)
            : base(view)
        {
            _communicationAcertoIRRF = new Sinacor.UI.Bovespa.Movimento.Communication.AcertoIRRF(this.Session);
            _filtroAcertoIRRF = new Sinacor.UI.Bovespa.Movimento.Model.Parameter.FiltroAcertoIRRF();
            _listaBolsas = new ModelCollection<Sinacor.UI.Bovespa.Movimento.Model.Bolsa>();
            _listaDiasLiquidacaoAcerto = new ModelCollection<Sinacor.UI.Bovespa.Movimento.Model.DiasLiquidacaoAcerto>();
            _listaAcertosIRRF = new ModelCollection<Sinacor.UI.Bovespa.Movimento.Model.AcertoIRRF>();
            
        }

        #endregion

		#region Propriedades

        /// <summary>
        /// Lista do DataGrid
        /// </summary>
		public ModelCollection<Model.AcertoIRRF> ListaAcertosIRRF
		{
			get { return _listaAcertosIRRF; }
			set { _listaAcertosIRRF = value; }
		}

		/// <summary>
		/// Lista utilizada na combo Bolsa.
		/// </summary>
		public ModelCollection<Model.Bolsa> ListaBolsas
		{
			get { return _listaBolsas; }
			set { _listaBolsas = value; }
		}

        /// <summary>
        /// Lista do combo Dias Liquidação
        /// </summary>
		public ModelCollection<Model.DiasLiquidacaoAcerto> ListaDiasLiquidacaoAcerto
		{
			get { return _listaDiasLiquidacaoAcerto; }
			set { _listaDiasLiquidacaoAcerto = value; }
		}

        /// <summary>
        /// Filtro para pesquisa
        /// </summary>
		public Model.Parameter.FiltroAcertoIRRF FiltroAcertoIRRF
		{
			get { return _filtroAcertoIRRF; }
			set { _filtroAcertoIRRF = value; }
		}
		#endregion

		#region Métodos
        
		/// <summary>
		/// Altera acerto IRRF.
		/// </summary>
		/// <param name="model"></param>
		public Boolean AlterarAcertoIRRF(Model.AcertoIRRF model)
		{
            try
            {
                _communicationAcertoIRRF.AlterarAcertoIRRF(model);
                View.InformarAlteracaoAcertoSucesso();
                return true;
            }
            catch (Exception ex)
            {
                base.HandleException(ex);
                return false;
            }			
		}

		/// <summary>
		/// Disponibiliza uma lista de acertos IRRF.
		/// </summary>
		public void ConsularAcertosIRRF()
		{
            try
            {
                ListaAcertosIRRF = _communicationAcertoIRRF.ConsularAcertosIRRF(FiltroAcertoIRRF);

                if (ListaAcertosIRRF.Count == 0)
                    View.InformarNenhumRegistroEncontrado();

                View.AtualizarGridAcertosIRRF();                    
                    
            }
            catch (Exception ex)
            {
                base.HandleException(ex);
            }
		}

		/// <summary>
		/// Disponibiliza uma lista de Bolsas.
		/// </summary>
		public void ConsultarBolsas()
		{            
            try
            {
                ListaBolsas = _communicationAcertoIRRF.ConsultarBolsas();
            }
            catch (Exception ex)
            {
                base.HandleException(ex);
            }			
		}

		/// <summary>
		/// Disponibilizar uma lista de dias para liquidação.
		/// </summary>
		public void ConsultarDiasLiquidacao()
		{
            try
            {
                ListaDiasLiquidacaoAcerto = _communicationAcertoIRRF.ConsultarDiasLiquidacao();
            }
            catch (Exception ex)
            {
                base.HandleException(ex);
            }			
		}

		/// <summary>
		/// Inclui acerto IRRF.
		/// </summary>
		/// <param name="model"></param>
		public Boolean IncluirAcertoIRRF(Model.AcertoIRRF model)
		{
            try
            {
                _communicationAcertoIRRF.IncluirAcertoIRRF(model);
                View.InformarInclusaoAcertoSucesso();
                return true;
            }
            catch (Exception ex)
            {
                base.HandleException(ex);
                return false;
            }				
		}

		/// <summary>
		/// Método chamada ao iniciar a tela.
		/// </summary>
		public void Inicializar()
		{           
            this.ConsultarBolsas();
	        this.ConsultarDiasLiquidacao();                                			
		}
		#endregion
	}

}